<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/irqdesc.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/irqdesc.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX0lSUURFU0NfSF8w"><span class="b">_LINUX_IRQDESC_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX0lSUURFU0NfSF8w"><span class="b">_LINUX_IRQDESC_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="k">/*</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> * Core internal functions to deal with irq descriptors</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> *</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> * This include will move to kernel/irq once we cleaned up the tree.</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> * For now it&apos;s included from &lt;linux/irq.h&gt;</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> */</span>
<a name="10" /><span class="True">      10:</span> 
<a name="11" /><span class="True">      11:</span> <span class="m">struct</span> <span class="b">irq_affinity_notify</span><span class="f">;</span>
<a name="12" /><span class="True">      12:</span> <span class="m">struct</span> <span class="b">proc_dir_entry</span><span class="f">;</span>
<a name="13" /><span class="True">      13:</span> <span class="m">struct</span> <span class="b">module</span><span class="f">;</span>
<a name="14" /><span class="True">      14:</span> <span class="m">struct</span> <span class="b">irq_desc</span><span class="f">;</span>
<a name="15" /><span class="True">      15:</span> 
<a name="16" /><span class="True">      16:</span> <span class="k">/**</span>
<a name="17" /><span class="True">      17:</span> <span class="k"> * struct irq_desc - interrupt descriptor</span>
<a name="18" /><span class="True">      18:</span> <span class="k"> * @irq_data:        per irq and chip data passed down to chip functions</span>
<a name="19" /><span class="True">      19:</span> <span class="k"> * @kstat_irqs:        irq stats per cpu</span>
<a name="20" /><span class="True">      20:</span> <span class="k"> * @handle_irq:        highlevel irq-events handler</span>
<a name="21" /><span class="True">      21:</span> <span class="k"> * @preflow_handler:    handler called before the flow handler (currently used by sparc)</span>
<a name="22" /><span class="True">      22:</span> <span class="k"> * @action:        the irq action chain</span>
<a name="23" /><span class="True">      23:</span> <span class="k"> * @status:        status information</span>
<a name="24" /><span class="True">      24:</span> <span class="k"> * @core_internal_state__do_not_mess_with_it: core internal status information</span>
<a name="25" /><span class="True">      25:</span> <span class="k"> * @depth:        disable-depth, for nested irq_disable() calls</span>
<a name="26" /><span class="True">      26:</span> <span class="k"> * @wake_depth:        enable depth, for multiple irq_set_irq_wake() callers</span>
<a name="27" /><span class="True">      27:</span> <span class="k"> * @irq_count:        stats field to detect stalled irqs</span>
<a name="28" /><span class="True">      28:</span> <span class="k"> * @last_unhandled:    aging timer for unhandled count</span>
<a name="29" /><span class="True">      29:</span> <span class="k"> * @irqs_unhandled:    stats field for spurious unhandled interrupts</span>
<a name="30" /><span class="True">      30:</span> <span class="k"> * @lock:        locking for SMP</span>
<a name="31" /><span class="True">      31:</span> <span class="k"> * @affinity_hint:    hint to user space for preferred irq affinity</span>
<a name="32" /><span class="True">      32:</span> <span class="k"> * @affinity_notify:    context for notification of affinity changes</span>
<a name="33" /><span class="True">      33:</span> <span class="k"> * @pending_mask:    pending rebalanced interrupts</span>
<a name="34" /><span class="True">      34:</span> <span class="k"> * @threads_oneshot:    bitfield to handle shared oneshot threads</span>
<a name="35" /><span class="True">      35:</span> <span class="k"> * @threads_active:    number of irqaction threads currently running</span>
<a name="36" /><span class="True">      36:</span> <span class="k"> * @wait_for_threads:    wait queue for sync_irq to wait for threaded handlers</span>
<a name="37" /><span class="True">      37:</span> <span class="k"> * @dir:        /proc/irq/ procfs entry</span>
<a name="38" /><span class="True">      38:</span> <span class="k"> * @name:        flow handler name for /proc/interrupts output</span>
<a name="39" /><span class="True">      39:</span> <span class="k"> */</span>
<a name="40" /><span class="True">      40:</span> <span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">{</span>
<a name="41" /><span class="True">      41:</span>     <span class="m">struct</span> <span class="b">irq_data</span>        <span class="b">irq_data</span><span class="f">;</span>
<a name="42" /><span class="True">      42:</span>     <span class="m">unsigned</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19wZXJjcHVfMA__"><span class="b">__percpu</span></a>    <span class="f">*</span><span class="b">kstat_irqs</span><span class="f">;</span>
<a name="43" /><span class="True">      43:</span>     <span class="b">irq_flow_handler_t</span>    <span class="b">handle_irq</span><span class="f">;</span>
<a name="44" /><span class="False">      44:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_IRQ_PREFLOW_FASTEOI</span>
<a name="45" /><span class="False">      45:</span>     <span class="b">irq_preflow_handler_t</span>    <span class="b">preflow_handler</span><span class="f">;</span>
<a name="46" /><span class="True">      46:</span> <span class="f">#</span><span class="n">endif</span>
<a name="47" /><span class="True">      47:</span>     <span class="m">struct</span> <span class="b">irqaction</span>    <span class="f">*</span><span class="b">action</span><span class="f">;</span>    <span class="k">/* IRQ action list */</span>
<a name="48" /><span class="True">      48:</span>     <span class="m">unsigned</span> <span class="m">int</span>        <span class="b">status_use_accessors</span><span class="f">;</span>
<a name="49" /><span class="True">      49:</span>     <span class="m">unsigned</span> <span class="m">int</span>        <span class="b">core_internal_state__do_not_mess_with_it</span><span class="f">;</span>
<a name="50" /><span class="True">      50:</span>     <span class="m">unsigned</span> <span class="m">int</span>        <span class="b">depth</span><span class="f">;</span>        <span class="k">/* nested irq disables */</span>
<a name="51" /><span class="True">      51:</span>     <span class="m">unsigned</span> <span class="m">int</span>        <span class="b">wake_depth</span><span class="f">;</span>    <span class="k">/* nested wake enables */</span>
<a name="52" /><span class="True">      52:</span>     <span class="m">unsigned</span> <span class="m">int</span>        <a href="cpu.c_macros_noref.html#_aXJxX2NvdW50XzA_"><span class="b">irq_count</span></a><span class="f">;</span>    <span class="k">/* For detecting broken IRQs */</span>
<a name="53" /><span class="True">      53:</span>     <span class="m">unsigned</span> <span class="m">long</span>        <span class="b">last_unhandled</span><span class="f">;</span>    <span class="k">/* Aging timer for unhandled count */</span>
<a name="54" /><span class="True">      54:</span>     <span class="m">unsigned</span> <span class="m">int</span>        <span class="b">irqs_unhandled</span><span class="f">;</span>
<a name="55" /><span class="True">      55:</span>     <span class="b">raw_spinlock_t</span>        <span class="b">lock</span><span class="f">;</span>
<a name="56" /><span class="True">      56:</span>     <span class="m">struct</span> <span class="b">cpumask</span>        <span class="f">*</span><span class="b">percpu_enabled</span><span class="f">;</span>
<a name="57" /><span class="True">      57:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NNUF8w"><span class="b">CONFIG_SMP</span></a>
<a name="58" /><span class="True">      58:</span>     <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span>    <span class="f">*</span><span class="b">affinity_hint</span><span class="f">;</span>
<a name="59" /><span class="True">      59:</span>     <span class="m">struct</span> <span class="b">irq_affinity_notify</span> <span class="f">*</span><span class="b">affinity_notify</span><span class="f">;</span>
<a name="60" /><span class="True">      60:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0dFTkVSSUNfUEVORElOR19JUlFfMA__"><span class="b">CONFIG_GENERIC_PENDING_IRQ</span></a>
<a name="61" /><span class="True">      61:</span>     <span class="b">cpumask_var_t</span>        <span class="b">pending_mask</span><span class="f">;</span>
<a name="62" /><span class="True">      62:</span> <span class="f">#</span><span class="n">endif</span>
<a name="63" /><span class="True">      63:</span> <span class="f">#</span><span class="n">endif</span>
<a name="64" /><span class="True">      64:</span>     <span class="m">unsigned</span> <span class="m">long</span>        <span class="b">threads_oneshot</span><span class="f">;</span>
<a name="65" /><span class="True">      65:</span>     <span class="b">atomic_t</span>        <span class="b">threads_active</span><span class="f">;</span>
<a name="66" /><span class="True">      66:</span>     <span class="b">wait_queue_head_t</span>       <span class="b">wait_for_threads</span><span class="f">;</span>
<a name="67" /><span class="True">      67:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1BST0NfRlNfMA__"><span class="b">CONFIG_PROC_FS</span></a>
<a name="68" /><span class="True">      68:</span>     <span class="m">struct</span> <span class="b">proc_dir_entry</span>    <span class="f">*</span><span class="b">dir</span><span class="f">;</span>
<a name="69" /><span class="True">      69:</span> <span class="f">#</span><span class="n">endif</span>
<a name="70" /><span class="True">      70:</span>     <span class="m">int</span>            <span class="b">parent_irq</span><span class="f">;</span>
<a name="71" /><span class="True">      71:</span>     <span class="m">struct</span> <span class="b">module</span>        <span class="f">*</span><span class="b">owner</span><span class="f">;</span>
<a name="72" /><span class="True">      72:</span>     <span class="m">const</span> <span class="m">char</span>        <span class="f">*</span><span class="b">name</span><span class="f">;</span>
<a name="73" /><span class="True">      73:</span> <span class="f">}</span> <a href="cpu.c_macros_ref.html#_X19fX2NhY2hlbGluZV9pbnRlcm5vZGVhbGlnbmVkX2luX3NtcF8w"><span class="b">____cacheline_internodealigned_in_smp</span></a><span class="f">;</span>
<a name="74" /><span class="True">      74:</span> 
<a name="75" /><span class="False">      75:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NQQVJTRV9JUlFfMA__"><span class="b">CONFIG_SPARSE_IRQ</span></a>
<a name="76" /><span class="False">      76:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">irq_desc</span> <span class="b">irq_desc</span><span class="f">[</span><a href="cpu.c_macros_noref.html#_TlJfSVJRU18w"><span class="b">NR_IRQS</span></a><span class="f">]</span><span class="f">;</span>
<a name="77" /><span class="True">      77:</span> <span class="f">#</span><span class="n">endif</span>
<a name="78" /><span class="True">      78:</span> 
<a name="79" /><span class="True">      79:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">irq_data</span> <span class="f">*</span><span class="b">irq_desc_get_irq_data</span><span class="f">(</span><span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">)</span>
<a name="80" /><span class="True">      80:</span> <span class="f">{</span>
<a name="81" /><span class="True">      81:</span>     <span class="m">return</span> <span class="f">&amp;</span><span class="b">desc</span><span class="f">-&gt;</span><span class="b">irq_data</span><span class="f">;</span>
<a name="82" /><span class="True">      82:</span> <span class="f">}</span>
<a name="83" /><span class="True">      83:</span> 
<a name="84" /><span class="True">      84:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">irq_chip</span> <span class="f">*</span><span class="b">irq_desc_get_chip</span><span class="f">(</span><span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">)</span>
<a name="85" /><span class="True">      85:</span> <span class="f">{</span>
<a name="86" /><span class="True">      86:</span>     <span class="m">return</span> <span class="b">desc</span><span class="f">-&gt;</span><span class="b">irq_data</span><span class="f">.</span><span class="b">chip</span><span class="f">;</span>
<a name="87" /><span class="True">      87:</span> <span class="f">}</span>
<a name="88" /><span class="True">      88:</span> 
<a name="89" /><span class="True">      89:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="f">*</span><span class="b">irq_desc_get_chip_data</span><span class="f">(</span><span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">)</span>
<a name="90" /><span class="True">      90:</span> <span class="f">{</span>
<a name="91" /><span class="True">      91:</span>     <span class="m">return</span> <span class="b">desc</span><span class="f">-&gt;</span><span class="b">irq_data</span><span class="f">.</span><span class="b">chip_data</span><span class="f">;</span>
<a name="92" /><span class="True">      92:</span> <span class="f">}</span>
<a name="93" /><span class="True">      93:</span> 
<a name="94" /><span class="True">      94:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="f">*</span><span class="b">irq_desc_get_handler_data</span><span class="f">(</span><span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">)</span>
<a name="95" /><span class="True">      95:</span> <span class="f">{</span>
<a name="96" /><span class="True">      96:</span>     <span class="m">return</span> <span class="b">desc</span><span class="f">-&gt;</span><span class="b">irq_data</span><span class="f">.</span><span class="b">handler_data</span><span class="f">;</span>
<a name="97" /><span class="True">      97:</span> <span class="f">}</span>
<a name="98" /><span class="True">      98:</span> 
<a name="99" /><span class="True">      99:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">msi_desc</span> <span class="f">*</span><span class="b">irq_desc_get_msi_desc</span><span class="f">(</span><span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">)</span>
<a name="100" /><span class="True">     100:</span> <span class="f">{</span>
<a name="101" /><span class="True">     101:</span>     <span class="m">return</span> <span class="b">desc</span><span class="f">-&gt;</span><span class="b">irq_data</span><span class="f">.</span><span class="b">msi_desc</span><span class="f">;</span>
<a name="102" /><span class="True">     102:</span> <span class="f">}</span>
<a name="103" /><span class="True">     103:</span> 
<a name="104" /><span class="True">     104:</span> <span class="k">/*</span>
<a name="105" /><span class="True">     105:</span> <span class="k"> * Architectures call this to let the generic IRQ layer</span>
<a name="106" /><span class="True">     106:</span> <span class="k"> * handle an interrupt. If the descriptor is attached to an</span>
<a name="107" /><span class="True">     107:</span> <span class="k"> * irqchip-style controller then we call the -&gt;handle_irq() handler,</span>
<a name="108" /><span class="True">     108:</span> <span class="k"> * and it calls __do_IRQ() if it&apos;s attached to an irqtype-style controller.</span>
<a name="109" /><span class="True">     109:</span> <span class="k"> */</span>
<a name="110" /><span class="True">     110:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">generic_handle_irq_desc</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">,</span> <span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">)</span>
<a name="111" /><span class="True">     111:</span> <span class="f">{</span>
<a name="112" /><span class="True">     112:</span>     <span class="b">desc</span><span class="f">-&gt;</span><span class="b">handle_irq</span><span class="f">(</span><span class="b">irq</span><span class="f">,</span> <span class="b">desc</span><span class="f">)</span><span class="f">;</span>
<a name="113" /><span class="True">     113:</span> <span class="f">}</span>
<a name="114" /><span class="True">     114:</span> 
<a name="115" /><span class="True">     115:</span> <span class="m">int</span> <span class="b">generic_handle_irq</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">)</span><span class="f">;</span>
<a name="116" /><span class="True">     116:</span> 
<a name="117" /><span class="True">     117:</span> <span class="k">/* Test to see if a driver has successfully requested an irq */</span>
<a name="118" /><span class="True">     118:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">irq_has_action</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">)</span>
<a name="119" /><span class="True">     119:</span> <span class="f">{</span>
<a name="120" /><span class="True">     120:</span>     <span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span> <span class="f">=</span> <span class="b">irq_to_desc</span><span class="f">(</span><span class="b">irq</span><span class="f">)</span><span class="f">;</span>
<a name="121" /><span class="True">     121:</span>     <span class="m">return</span> <span class="b">desc</span><span class="f">-&gt;</span><span class="b">action</span> <span class="f">!=</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>
<a name="122" /><span class="True">     122:</span> <span class="f">}</span>
<a name="123" /><span class="True">     123:</span> 
<a name="124" /><span class="True">     124:</span> <span class="k">/* caller has locked the irq_desc and both params are valid */</span>
<a name="125" /><span class="True">     125:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__irq_set_handler_locked</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">,</span>
<a name="126" /><span class="True">     126:</span>                         <span class="b">irq_flow_handler_t</span> <span class="b">handler</span><span class="f">)</span>
<a name="127" /><span class="True">     127:</span> <span class="f">{</span>
<a name="128" /><span class="True">     128:</span>     <span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">;</span>
<a name="129" /><span class="True">     129:</span> 
<a name="130" /><span class="True">     130:</span>     <span class="b">desc</span> <span class="f">=</span> <span class="b">irq_to_desc</span><span class="f">(</span><span class="b">irq</span><span class="f">)</span><span class="f">;</span>
<a name="131" /><span class="True">     131:</span>     <span class="b">desc</span><span class="f">-&gt;</span><span class="b">handle_irq</span> <span class="f">=</span> <span class="b">handler</span><span class="f">;</span>
<a name="132" /><span class="True">     132:</span> <span class="f">}</span>
<a name="133" /><span class="True">     133:</span> 
<a name="134" /><span class="True">     134:</span> <span class="k">/* caller has locked the irq_desc and both params are valid */</span>
<a name="135" /><span class="True">     135:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="136" /><span class="True">     136:</span> <span class="b">__irq_set_chip_handler_name_locked</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">,</span> <span class="m">struct</span> <span class="b">irq_chip</span> <span class="f">*</span><span class="b">chip</span><span class="f">,</span>
<a name="137" /><span class="True">     137:</span>                    <span class="b">irq_flow_handler_t</span> <span class="b">handler</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">name</span><span class="f">)</span>
<a name="138" /><span class="True">     138:</span> <span class="f">{</span>
<a name="139" /><span class="True">     139:</span>     <span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">;</span>
<a name="140" /><span class="True">     140:</span> 
<a name="141" /><span class="True">     141:</span>     <span class="b">desc</span> <span class="f">=</span> <span class="b">irq_to_desc</span><span class="f">(</span><span class="b">irq</span><span class="f">)</span><span class="f">;</span>
<a name="142" /><span class="True">     142:</span>     <span class="b">irq_desc_get_irq_data</span><span class="f">(</span><span class="b">desc</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">chip</span> <span class="f">=</span> <span class="b">chip</span><span class="f">;</span>
<a name="143" /><span class="True">     143:</span>     <span class="b">desc</span><span class="f">-&gt;</span><span class="b">handle_irq</span> <span class="f">=</span> <span class="b">handler</span><span class="f">;</span>
<a name="144" /><span class="True">     144:</span>     <span class="b">desc</span><span class="f">-&gt;</span><span class="b">name</span> <span class="f">=</span> <span class="b">name</span><span class="f">;</span>
<a name="145" /><span class="True">     145:</span> <span class="f">}</span>
<a name="146" /><span class="True">     146:</span> 
<a name="147" /><span class="True">     147:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">irq_balancing_disabled</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">)</span>
<a name="148" /><span class="True">     148:</span> <span class="f">{</span>
<a name="149" /><span class="True">     149:</span>     <span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">;</span>
<a name="150" /><span class="True">     150:</span> 
<a name="151" /><span class="True">     151:</span>     <span class="b">desc</span> <span class="f">=</span> <span class="b">irq_to_desc</span><span class="f">(</span><span class="b">irq</span><span class="f">)</span><span class="f">;</span>
<a name="152" /><span class="True">     152:</span>     <span class="m">return</span> <span class="b">desc</span><span class="f">-&gt;</span><span class="b">status_use_accessors</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_SVJRX05PX0JBTEFOQ0lOR19NQVNLXzA_"><span class="b">IRQ_NO_BALANCING_MASK</span></a><span class="f">;</span>
<a name="153" /><span class="True">     153:</span> <span class="f">}</span>
<a name="154" /><span class="True">     154:</span> 
<a name="155" /><span class="True">     155:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="156" /><span class="True">     156:</span> <span class="b">irq_set_lockdep_class</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">,</span> <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="f">*</span><span class="m">class</span><span class="f">)</span>
<a name="157" /><span class="True">     157:</span> <span class="f">{</span>
<a name="158" /><span class="True">     158:</span>     <span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span> <span class="f">=</span> <span class="b">irq_to_desc</span><span class="f">(</span><span class="b">irq</span><span class="f">)</span><span class="f">;</span>
<a name="159" /><span class="True">     159:</span> 
<a name="160" /><span class="True">     160:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">desc</span><span class="f">)</span>
<a name="161" /><span class="True">     161:</span>         <a href="cpu.c_macros_ref.html#_bG9ja2RlcF9zZXRfY2xhc3NfMA__"><span class="b">lockdep_set_class</span></a><span class="f">(</span><span class="f">&amp;</span><span class="b">desc</span><span class="f">-&gt;</span><span class="b">lock</span><span class="f">,</span> <span class="m">class</span><span class="f">)</span><span class="f">;</span>
<a name="162" /><span class="True">     162:</span> <span class="f">}</span>
<a name="163" /><span class="True">     163:</span> 
<a name="164" /><span class="False">     164:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_IRQ_PREFLOW_FASTEOI</span>
<a name="165" /><span class="False">     165:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="166" /><span class="False">     166:</span> <span class="b">__irq_set_preflow_handler</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">,</span> <span class="b">irq_preflow_handler_t</span> <span class="b">handler</span><span class="f">)</span>
<a name="167" /><span class="False">     167:</span> <span class="f">{</span>
<a name="168" /><span class="False">     168:</span>     <span class="m">struct</span> <span class="b">irq_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">;</span>
<a name="169" /><span class="False">     169:</span> 
<a name="170" /><span class="False">     170:</span>     <span class="b">desc</span> <span class="f">=</span> <span class="b">irq_to_desc</span><span class="f">(</span><span class="b">irq</span><span class="f">)</span><span class="f">;</span>
<a name="171" /><span class="False">     171:</span>     <span class="b">desc</span><span class="f">-&gt;</span><span class="b">preflow_handler</span> <span class="f">=</span> <span class="b">handler</span><span class="f">;</span>
<a name="172" /><span class="False">     172:</span> <span class="f">}</span>
<a name="173" /><span class="True">     173:</span> <span class="f">#</span><span class="n">endif</span>
<a name="174" /><span class="True">     174:</span> 
<a name="175" /><span class="True">     175:</span> <span class="f">#</span><span class="n">endif</span>
<a name="176" /><span class="True">     176:</span> </pre>
  </body>
</html>
